package org.suyafei.manager;

import com.baomidou.mybatisplus.core.metadata.IPage;
import org.suyafei.model.TrafficDO;

import java.util.List;

/**
 * @author 宿某人
 * @Date: 2022/03/11/15:34
 * @Description:
 */
public interface TrafficManager {
    /**
     *新增流量包
     * @param trafficDO
     * @return
     */
    int add(TrafficDO trafficDO);

    /**
     * 分页查询可用流量包
     * @param page
     * @param size
     * @param accountNo
     * @return
     */
    IPage<TrafficDO> pageAvailable(int page, int size, Long accountNo);

    /**
     * 查询详情
     * @param trafficId
     * @param accountNo
     * @return
     */
    TrafficDO findByIdAndAccountNo(Long trafficId, Long accountNo);

    /**
     * 增加某个流量包天数使用次数
     * @param currentTrafficId
     * @param accountNo
     * @param dayUseTime
     * @return
     */
    int addDayUseTimes(Long currentTrafficId, Long accountNo, int dayUseTime);

    /**
     * 删除过期流量包
     * @return
     */
    boolean deleteExpiredTraffic();


    /**
     * 查找可用的短链流量包(未过期),包括免费流量包
     * @param accountNo
     * @return
     */
    List<TrafficDO> selectAvailableTraffics(Long accountNo);

    /**
     * 给某个流量包增加使用次数
     *
     * @param trafficId
     * @param accountNo
     * @param usedTimes
     * @return
     */
    int addDayUsedTimes(Long accountNo, Long trafficId, Integer usedTimes) ;

    /**
     * 恢复流量包使用当天次数
     * @param accountNo
     * @param trafficId
     * @param usedTimes
     */
    int releaseUsedTimes(Long accountNo, Long trafficId, Integer usedTimes,String useDateStr);


    /**
     * 批量更新流量包使用次数为0
     * @param accountNo
     * @param unUpdatedTrafficIds
     */
    int batchUpdateUsedTimes(Long accountNo, List<Long> unUpdatedTrafficIds);
}
